package com.ruoyi.pos.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * POS菜单配置对象 pos_menu
 * 
 * @author Grand Pacific
 * @date 2024-01-01
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class PosMenu extends BaseEntity {
    
    private static final long serialVersionUID = 1L;

    /** 菜单ID */
    private Long menuId;

    /** 菜单名称 */
    @Excel(name = "菜单名称")
    private String menuName;

    /** 菜单编码 */
    @Excel(name = "菜单编码")
    private String menuCode;

    /** 父菜单ID */
    @Excel(name = "父菜单ID")
    private Long parentId;

    /** 菜单类型（module=模块菜单,function=功能菜单,webview=H5页面） */
    @Excel(name = "菜单类型")
    private String menuType;

    /** 菜单图标 */
    @Excel(name = "菜单图标")
    private String icon;

    /** 菜单颜色 */
    @Excel(name = "菜单颜色")
    private String color;

    /** 目标Activity类名（功能菜单） */
    @Excel(name = "目标Activity")
    private String targetActivity;

    /** 目标URL（H5页面） */
    @Excel(name = "目标URL")
    private String targetUrl;

    /** 显示顺序 */
    @Excel(name = "显示顺序")
    private Integer orderNum;

    /** 菜单状态（0=正常,1=停用） */
    @Excel(name = "菜单状态", readConverterExp = "0=正常,1=停用")
    private String status;

    /** 是否可见（0=显示,1=隐藏） */
    @Excel(name = "是否可见", readConverterExp = "0=显示,1=隐藏")
    private String visible;

    /** 权限标识 */
    @Excel(name = "权限标识")
    private String perms;

    /** 适用设备类型（all=全部,handheld=手持,desktop=台式） */
    @Excel(name = "适用设备类型")
    private String deviceType;

    /** 是否需要超级密码（0=否,1=是） */
    @Excel(name = "是否需要超级密码", readConverterExp = "0=否,1=是")
    private String needSuperPassword;

    /** 菜单描述 */
    @Excel(name = "菜单描述")
    private String description;

    /** 创建者 */
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 备注 */
    private String remark;

    /** 子菜单列表 */
    private List<PosMenu> children = new ArrayList<>();
}
